package forms;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

public class RegistrarAsistenciaForm extends ActionForm{

    private String usuario, disciplina, horaEntrada, horaSalida, fecha;
    private Date fechaDate;
    private static final Pattern HORA_PATTERN = Pattern.compile("[12]?[1-9]:[0-5][0-9]");
    public static SimpleDateFormat  sdf = new SimpleDateFormat("dd-MM-yyyy"); 

    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (usuario == null || usuario.length() < 1 || usuario.equals("0"))
            errors.add("usuario", new ActionMessage("error.usuario.required"));
        if (disciplina == null || disciplina.length() < 1 || disciplina.equals("0"))
            errors.add("disciplina", new ActionMessage("error.disciplina.required"));
        if (horaEntrada == null || horaEntrada.length() < 1) 
            errors.add("horaEntrada", new ActionMessage("error.horaEntrada.required"));
        if (!HORA_PATTERN.matcher(horaEntrada).matches())
            errors.add("horaEntrada", new ActionMessage("error.horaEntrada.invalid"));
        if (horaSalida == null || horaSalida.length() < 1) 
            errors.add("horaSalida", new ActionMessage("error.horaSalida.required"));
        if (!HORA_PATTERN.matcher(horaSalida).matches())
            errors.add("horaSalida", new ActionMessage("error.horaSalida.invalid"));
        fechaDate = validateDate(errors, fecha, "fecha", "error.fecha.required", "error.fecha.invalid");
        return errors;
    }

    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    public Date getFechaDate() {
        return fechaDate;
    }

    public void setFechaDate(Date fechaDate) {
        this.fechaDate = fechaDate;
    }
    

    public String getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(String disciplina) {
        this.disciplina = disciplina;
    }

    public String getHoraEntrada() {
        return horaEntrada;
    }

    public void setHoraEntrada(String horaEntrada) {
        this.horaEntrada = horaEntrada;
    }

    public String getHoraSalida() {
        return horaSalida;
    }

    public void setHoraSalida(String horaSalida) {
        this.horaSalida = horaSalida;
    }

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
    
    private Date validateDate(ActionErrors errors, String campo, String nombre,
             String errorNameRequired, String errorNameInvalid) {
        if (campo == null) {
            errors.add(nombre, new ActionMessage(errorNameRequired));
        } else {
            try {
                return sdf.parse(campo);
            } catch (ParseException ex) {
                errors.add(nombre, new ActionMessage(errorNameInvalid));
            }
        }
        return null;

    }

}